package com.fancy.projecty.A_流程相关;


import com.fancy.projecty.util.CeuiUtils;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Arrays;
import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest
public class H_删除流程定义 {

	@Test
	public void c_() {
		CeuiUtils.ceui();
	}


	/**
	 * 删除已经部署的流程定义
	 * <p>
	 * 背后影响的表:
	 * act_ge_bytearray
	 * act_re_deployment
	 * act_re_procdef
	 * <p>
	 * 注意事项：
	 * 1.当我们正在执行的这一套流程没有完全审批结束的时候，此时如果要删除流程定义信息就会失败
	 * 2.如果公司层面要强制删除,可以使用repositoryService.deleteDeployment("1",true);
	 * //参数true代表级联删除，此时就会先删除没有完成的流程结点，最后就可以删除流程定义信息  false的值代表不级联
	 * //级联删除是你没有跑完的流程和所有的关联记录都会被一起删除掉
	 *
	 * <p>
	 * 当然删除和查询可以在一起去完成使用
	 */
	@Test
	public void c_2删除无用的流程() {
//		部署的id取值范围是act_re_procdef 表的 DEPLOYMENT_ID_ 字段的值

		//3.执行删除流程定义  参数代表流程部署的id
//		repositoryService.deleteDeployment("1");
		//级联删除

		repositoryService.deleteDeployment("150001", true);

		//级联删除多个
//		List<String> strings = Arrays.asList("100001", "122501", "125001", "127501", "15001", "25001");
//		for (String id : strings) {
//			repositoryService.deleteDeployment(id, true);
//
//		}

	}


	@Autowired
	/*执行管理、包括启动、推进、删除流程实例等操作*/
	private RuntimeService runtimeService;
	@Autowired
	/*任务管理,可以做任务的查询的*/
	private TaskService taskService;

	@Autowired
	/*管理流程定义,部署相关的Service*/
	private RepositoryService repositoryService;
}
